/**
 * 
 */
package org.youisoft.summer.evaluator.connector;

import org.youisoft.summer.evaluator.context.CalContext;
import org.youisoft.summer.evaluator.operator.Operator;

/**
 * @author zijiang.jl
 *
 */
public interface Connectable {
	
	/**
	 * 
	 * @return
	 */
	public boolean isConnect();
	
	/**
	 * 
	 * @return
	 */
	public boolean connect();
	
	/**
	 * 
	 * @return
	 */
	public boolean reConnect();
	
	/**
	 * 
	 * @param <C>
	 * @param <R>
	 * @param <P>
	 * @param context
	 * @param syn
	 * @return
	 */
	public <C, R, P> Operator<?> request(CalContext<C, R, P> context,boolean syn);
	
	/**
	 * 
	 * @param <C>
	 * @param <R>
	 * @param <P>
	 * @param context
	 * @param syn
	 * @return
	 */
	public <C, R, P> Operator<?> dispatch(CalContext<C, R, P> context,boolean syn);
	

}
